package com.southminority.ethnic.pojo.otherPojo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.southminority.ethnic.common.enums.ResearchStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 研究项目实体类
 * 
 * @author SouthMinority
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("research_project")
@Schema(description = "研究项目")
public class ResearchProject extends BaseEntity {

    /**
     * 项目名称
     */
    @TableField("project_name")
    @Schema(description = "项目名称")
    private String projectName;

    /**
     * 项目编号
     */
    @TableField("project_code")
    @Schema(description = "项目编号")
    private String projectCode;

    /**
     * 项目描述
     */
    @TableField("description")
    @Schema(description = "项目描述")
    private String description;

    /**
     * 项目负责人ID
     */
    @TableField("leader_id")
    @Schema(description = "项目负责人ID")
    private Long leaderId;

    /**
     * 项目负责人姓名
     */
    @TableField("leader_name")
    @Schema(description = "项目负责人姓名")
    private String leaderName;

    /**
     * 研究状态
     */
    @TableField("status")
    @Schema(description = "研究状态")
    private ResearchStatusEnum status;

    /**
     * 开始日期
     */
    @TableField("start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "开始日期")
    private LocalDate startDate;

    /**
     * 结束日期
     */
    @TableField("end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Schema(description = "结束日期")
    private LocalDate endDate;

    /**
     * 项目预算
     */
    @TableField("budget")
    @Schema(description = "项目预算")
    private BigDecimal budget;

    /**
     * 已使用预算
     */
    @TableField("used_budget")
    @Schema(description = "已使用预算")
    private BigDecimal usedBudget;

    /**
     * 项目类型
     */
    @TableField("project_type")
    @Schema(description = "项目类型")
    private String projectType;

    /**
     * 研究领域
     */
    @TableField("research_field")
    @Schema(description = "研究领域")
    private String researchField;

    /**
     * 关键词
     */
    @TableField("keywords")
    @Schema(description = "关键词")
    private String keywords;

    /**
     * 项目进度（百分比）
     */
    @TableField("progress")
    @Schema(description = "项目进度")
    private Integer progress;

    /**
     * 备注
     */
    @TableField("remark")
    @Schema(description = "备注")
    private String remark;
}
